package cn.tianyigps.tianyigpsbatterylockalarm.checkDetail;

import cn.tianyigps.tianyigpskafka.task.bean.Task;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

/**
 * @Author: WEI.YUAN
 * @Descirption:参数校验
 * @Date: 2019/4/17_15:51
 */
@Component
@Slf4j
public class BatteryCheckDetail {
    public Boolean judgeBattery(Task task) {
        //id不能为空
        if (StringUtils.isEmpty(task.getId())) {
            return false;
        }
        Task nextTask = task.getNextTask();
        //nextTask的TaskType不能为空
        if (StringUtils.isEmpty(nextTask.getTaskType())) {
            return false;
        }
        //nextTask的callback不能为空
        if (!nextTask.getParams().containsKey("callback") || StringUtils.isEmpty(nextTask.getParams().get("callback"))) {
            return false;
        }
        //启动标识不能为空
        if (!task.getParams().containsKey("flag") || StringUtils.isEmpty(task.getParams().get("flag"))) {
            return false;
        }
        //falg为true时参数校验
        if (task.getParams().containsKey("flag") && String.valueOf(task.getParams().get("flag")).equals("true")) {
            return this.judgeBatteryTrue(task);
        } else {
            //flag为false删除规则
            return this.judgeBatteryfalse(task);
        }
    }


    /**
     * 当启动标识为true 时task判断规则
     */
    public Boolean judgeBatteryTrue(Task task) {
        //设备id不能为空
        if (!task.getParams().containsKey("equipmentId") || StringUtils.isEmpty(task.getParams().get("equipmentId"))) {
            return false;
        }
        //经度不能为空
        if (!task.getParams().containsKey("longitude") || StringUtils.isEmpty(task.getParams().get("longitude"))) {
            return false;
        }
        //纬度不能为空
        if (!task.getParams().containsKey("latitude") || StringUtils.isEmpty(task.getParams().get("latitude"))) {
            return false;
        }
        try {
            Double.valueOf(task.getParams().get("latitude").toString());
            Double.valueOf(task.getParams().get("longitude").toString());
        } catch (Exception e) {
            e.printStackTrace();
            log.error(e.getMessage() + "经纬度转换异常");
            return false;
        }

        //半径不能为空
        if (!task.getParams().containsKey("radius") || StringUtils.isEmpty(task.getParams().get("radius"))) {
            return false;
        }
        return true;

    }

    /**
     * 当启动标识为false 时task判断规则
     */
    public Boolean judgeBatteryfalse(Task task) {
        //设备id不能为空
        if (!task.getParams().containsKey("equipmentId") || StringUtils.isEmpty(task.getParams().get("equipmentId"))) {
            return false;
        }
        return true;

    }

    /**
     * 处理数据是否报警
     *
     * @param task
     */
    public Boolean batteryAlarm(Task task) {
        //设备model不能为空
        if (!task.getParams().containsKey("equipmentModel") || task.getParams().get("equipmentModel") == null) {
            return false;
        }
        return true;

    }

}
